package dao;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.Query;

import model.Usuario;

public class UsuarioDAO {
	private EntityManager em;

	public UsuarioDAO(EntityManager em) {
		this.em = em;
	}

	public void adicionarUsuario(Usuario u) {
		u.setArea(em.merge(u.getArea()));
		em.persist(u);
	}

	public void remove(Usuario u) {
		Usuario u1 = em.merge(u);
		em.remove(u1);
	}

	public List<Usuario> listar() {
		Query q = em.createQuery("select u from Usuario u");
		return q.getResultList();
	}

	public <E> E find(Class<E> classe, String senha) {
		return em.find(classe, senha);
	}

	public Usuario buscarLogin(String login) {
		try {
			Query q = em
					.createQuery("select u from Usuario u where user = :login");
			q.setParameter("login", login);
			Usuario u = (Usuario) q.getSingleResult();
			return u;
		} catch (NoResultException e) {
			return null;
		}
	}

	public Usuario buscarUsuario(int idUsuario) {
		try {
			Query q = em.createQuery("select u from Usuario u where id = :id");
			q.setParameter("id", idUsuario);
			Usuario u = (Usuario) q.getSingleResult();
			return u;
		} catch (NoResultException e) {
			return null;
		}

	}

	public void alterarUsuario(Usuario usuario) {
		Usuario u1 = em.merge(usuario);
		em.persist(u1);
	}
}